
//const
// 对于const，常量贯穿于整个程序的生命周期。更具体的，Rust 中的常量并没有固定的内存地址。
// 这是因为实际上它们会被内联到用到它们的地方。为此对同一常量的引用并不能保证引用到相同的内存地址。
//一个常量可以理解为是一个C语言中的#define，它有元数据开销但无运行时开销。
const N: i32 = 5;    //定义一个整型常量

//static
// 对于static，Rust以静态量的方式提供了类似“全局变量”的功能。它们与常量类似，
// 不过静态量在使用时并不内联。这意味着对每一个值只有一个实例，并且位于内存中的固定位置。

static X: i32 = 5;
static NAME: &'static str = "Steve";     //静态量贯穿于整个程序的生命周期，因此任何存储在常量中的引用有一个'static生命周期

//因为这是可变的，一个线程可能在更新N同时另一个在读取它，导致内存不安全。
//因此访问和改变一个static mut是不安全（unsafe）的，因此必须在unsafe块中操作
static mut NUM : i32 = 10;
#[test]
pub fn static_demo(){
    unsafe {
        NUM = NUM + 1;
        println!("{}", NUM);
    }
}

